package com.zoe.onelink.mybatis.base.service;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>标题: </p>
 * <p>描述: </p>
 * <p>版权: Copyright (c) 2021</p>
 * <p>公司: 智业软件股份有限公司</p>
 *
 * @version: 1.0
 * @author: ruansheng
 * @date: 2021-07-15
 */
public interface IBaseService<Entity> extends IService<Entity> {


    /**
     * 根据注解定义的搜索字段搜索 {@link SearchField}
     *
     * @param queryWrapper
     * @return
     */
    List<Entity> searchList(String query, Wrapper<Entity> queryWrapper);

    default List<Entity> searchList(String query) {
        return searchList(query, Wrappers.emptyWrapper());
    }

    /**
     * 根据注解定义的搜索字段搜索并分页 {@link SearchField}
     *
     * @param page         分页信息
     * @param queryWrapper 查询条件
     * @return
     */
    <E extends IPage<Entity>> E searchPage(String query, E page, Wrapper<Entity> queryWrapper);

    default <E extends IPage<Entity>> E searchPage(String query, E page) {
        return searchPage(query, page, Wrappers.emptyWrapper());
    }

}
